home *** CD-ROM | disk | FTP | other *** search
/ Aminet 4 / Aminet 4 - November 1994.iso / aminet / comm / ums / listserver2_15.lha / ListServer / ListServer.doc < prev    next >
Text File  |  1994-08-26  |  15KB  |  383 lines

  1.  
  2.                 ListServer (V 2.14)
  3.                 ~~~~~~~~~~~~~~~~~~~
  4.  
  5. Format:   rx ListServer.rexx <name> <password> [SERVER <server]
  6. ~~~~~~~   [LOOP <loopcommand>]
  7.  
  8. Template: NAME/A,PASSWORD,SERVER/K,LOOP/K
  9. ~~~~~~~~~
  10.  
  11. Purpose:  Run any number of mailinglists and handle
  12. ~~~~~~~~  subscribe/unsubscribe-requests.
  13.  
  14. Specification:
  15. ~~~~~~~~~~~~~~
  16.  
  17.   A  "mailinglist" is a special email address: all mails to this address
  18. are automatically forwarded to a list of other users, its "subscribers".
  19. The  Reply-To  of  the forwarded mails is set to the mailinglist so that
  20. replies also reach all subscribers.
  21.  
  22.   Thus  a  mailinglist  can be used much like a newsgroup. Compared to a
  23. newsgroup, a mailinglist has some advantages:
  24.  
  25.  + everybody with an email-connection can take part in mailinglists
  26.  + it's  easy  to  create  mailinglists, whereas creating new newsgroups
  27.     usually involves some adminstrative effort and bureaucracy
  28.  + the  list  of  subscribers  is centrally maintained and can be easily
  29.     controlled
  30.  
  31.   However there are also some drawbacks:
  32.  
  33.  - many mail-readers are not very well-suited to deal with mailinglists,
  34.     thus  making it uncomfortable to read the larger numbers of messages
  35.     that mailinglists generate.
  36.  - if  mailinglists  exceed  a certain number of subscribers they become
  37.     much  more  costly  than  newsgroups  (in  terms  a  overall network
  38.     bandwith)
  39.  - once a newsgroup is established it's easier for new users to join the
  40.     group or to just check it out.
  41.  
  42.   So, whether it's better to create a mailinglist for a certain topic or
  43. a  newsgroup  really  depends on the number of users you want to address
  44. and whether it needs to be a public or a private forum.
  45.  
  46.   "ListServer.rexx"  is  a  mailinglist-driver for UMS. It can drive any
  47. number of mailinglists, maintains the list of subscribers for each list,
  48. and allows remote subsription to mailinglists. It can also transparently
  49. gate each list into a newsgroup, fully preserving message threading.
  50.  
  51.  
  52. Function:
  53. ~~~~~~~~~
  54.  
  55.   ListServer  must  be  started  with the name and password of a special
  56. UMS-user in the commandline.
  57.  
  58.   It  first  obtains its configuration from the umsserver, including the
  59. list of all mailinglists to drive and all their subscribers.
  60.  
  61.   Then  it looks for new mails addressed to a "server" username, usually
  62. called  "request".  These  messages are searched for commands that allow
  63. users  to  subscribe  or unsubscribe, or obtain useful information about
  64. the  lists.  It  also  generates  answers  to  all  processed  mails and
  65. notifications to users that are added or removed from mailinglists.
  66.  
  67.   Finally the real work is done: for each mailinglist incoming mails are
  68. processed and forwarded to the subscribers. If a newsgroup is configured
  69. for  the  mailinglist,  the mails are also sent to the newsgroup and new
  70. postings  in  the newsgroup are sent to the subscribers. Special care is
  71. taken  to  remember all message-ids so that future follow-ups or replies
  72. are  given  the correct references on each side. If a follow-up or reply
  73. is  received,  the  reference-ids  to  be  used  are  looked  up  in the
  74. message-base.  This  only  succeeds  if  the  referred  to message still
  75. exists.
  76.  
  77.  
  78. Configuration:
  79. ~~~~~~~~~~~~~~
  80.  
  81.   ListServer  needs  one  UMS-user-entry  for  all mailinglists. All the
  82. configuration is done via UMS config variables in this user-entry.
  83.  
  84.   That  UMS-user  must  be  an  EXPORTER,  i.e. it must have an "EXPORT"
  85. pattern.  This  can (and should) be "%" though, meaning that it actually
  86. exports nothing. The reason for this is the heavy magic used to remember
  87. the mail-message-ids for follow-ups in the newsgroup and vice-versa.
  88.  
  89.   Some  IMPORT-access  is  needed since ListServ must be able to use all
  90. subscribers addresses as a FromAddr when creating new messages. This can
  91. be "#?", allowing any address to be used.
  92.  
  93.   Several ALIASes are needed. One must be "request" or whatever username
  94. will be used to process request-mails (see below: "mailinglist.server").
  95. Another  one  must  be  the "username" useed for answering the requests,
  96. e.g. "listserv" (That must also be placed in "uucp.username" if UMS-UUCP
  97. is  used).  It's  strongly  recommended  to  use different usernames for
  98. addressing and answering the requests, since otherwise simple errors may
  99. cause infinite loops of bounce- and error-mail. Daemons on other systems
  100. and the ListServer would play ping-pong, not understanding each other.
  101.  
  102.   Two  additional  ALIASes  are needed for each mailinglist. One must be
  103. equal   to   the   name   of   the   mailinglist   and   one   must   be
  104. "Mailinglist '<listname>'",  resembling the mailinglist's "username" and
  105. "realname".
  106.  
  107.   Obviously   ListServer   needs   READACCESS  and  WRITEACCESS  to  the
  108. newsgroups  it deals with. However, having more access than needed won't
  109. hurt.
  110.  
  111.   As stated above, all the configuration is done with UMS-config vars in
  112. ListServ's  user-account.  There are some general variables and some for
  113. each mailinglist.
  114.  
  115.  
  116.   General variables:
  117.  
  118.     mailinglist.hostname --
  119.  
  120.  the  name  of  the host. This is used to build the reply-to address for
  121. mails.  Only  the  part after "@", is needed, since the username and "@"
  122. are  prepended by ListServer.rexx. Yes, this means it only works for RFC
  123. (usenet)  for  now.  At  least you need to have a usenet-address you can
  124. use. Also a working "Reply-To:" field is required in the used network.
  125.  
  126.   mailinglist.server --
  127.  
  128.  the username that request-mails are addressed to. Usually "request".
  129.  
  130.   mailinglist.helpfile --
  131.  
  132.  complete  path  to  the  help-file.  This file is sent to a user of the
  133. ListServer  whenever  he  requests  help, or proves to have trouble with
  134. ListServers  request-commands. The helpfile is optional, but recommended
  135. for  your  users  convenience.  It should explain the available commands
  136. offered by ListServer (You may use the supplied helpfile).
  137.  
  138.   mailinglist.lists --
  139.  
  140.  the  list of all mailinglists. All mailinglists you want to run must be
  141. listed  in  this  variable,  it's  a  multi-line variable with each line
  142. containing the name of one mailinglist.
  143.  
  144.  
  145.   Mailinglist-specific variables exist for each mailinglist. The name of
  146. the mailinglist is used in the variable-name:
  147.  
  148.   mailinglist.<list>.group --       (optional)
  149.  
  150.  the  name  of  the  newsgroup  to be connected with the mailinglist. No
  151. newsgroup for this mailinglist will be used if this var doesn't exist.
  152.  
  153.   mailinglist.<list>.descfile --    (optional)
  154.  
  155.  complete  path  to a file containing a description for the mailinglist.
  156. This  may  incude  a  FAQ-list.  Users  can  order this file from within
  157. request-mails.
  158.  
  159.   mailinglist.<list>.alias --       (optional)
  160.  
  161.  alternate  username  for  that mailinglist. Mails to this username also
  162. are sent to the mailinglist (and newsgroup). Not usually needed.
  163.  
  164.   mailinglist.<list>.users --
  165.  
  166.  the  list  of all subscribers of that mailinglist. This is a multi-line
  167. variable. Each line specifies one subscriber in the format:
  168.  
  169.     name "," address
  170.  
  171.  This is used as UMS "ToName" and "ToAddress" when sending mails.
  172.  
  173.   mailinglist.<list>.access --
  174.  
  175.  an  AmigaDOS-style pattern that specifies the users that are allowed to
  176. add  new  subscribers  to  the  list.  Whenever  a  user  requests a new
  177. subscription, his name and address is matched against that pattern (name
  178. and  address given in the same format as in the subscriber-list). If the
  179. match doesn't succeed, his request is rejected.
  180.  This is used to protect closed "private" mailinglists.
  181.  Use "#?" to make the mailinglist public.
  182.  Use  "%" and the only way to add users is to directly modify the config
  183. variables.
  184.  
  185.  
  186. Example configuration:
  187. ~~~~~~~~~~~~~~~~~~~~~~
  188.  
  189. This is an example ListServer entry for UMS V10 (not tested):
  190.  
  191. User
  192. Name  = "UMS Mailinglist Server"
  193. Alias = list
  194. Alias = Request
  195. Alias = listserv
  196. Alias = testlist
  197. Alias = "Mailinglist 'testlist'"
  198. Alias = "Ums-Intl"
  199. Alias = "Mailinglist 'Ums-Intl'"
  200. Password = "secret"
  201. READACCESS = "(Fidonet.UMS-INTL|test.test)"
  202. WRITEACCESS = "#?"
  203. NETACCESS = "#?"
  204. IMPORT = "#?"
  205. EXPORT = "%"
  206. DISTRIBUTION = "(%|#?,)(mailinglist|list|UMS|N|Net|world)(,#?|%)"
  207. uucp.username = "list"
  208. mailinglist.helpfile = "wb:ums/mlist/helpfile"
  209. mailinglist.hostname = "umshq.dfv.rwth-aachen.de"
  210. mailinglist.lists  = "Ums-Intl*Ntestlist"
  211. mailinglist.server = "Request"
  212. mailinglist.testlist.access = "(SYSOP|Martin Horneffer),"
  213. mailinglist.testlist.descfile = "wb2:ums/mlist/testlist.desc"
  214. mailinglist.testlist.users = "Martin Horneffer,umshq
  215. umsadm,umsadm@wowbagger.pc-labor.uni-bremen.de
  216. Test User,test@test.do.main"
  217. mailinglist.Ums-Intl.access = "#?"
  218. mailinglist.Ums-Intl.descfile = "wb2:ums/mlist/Ums-Intl.desc"
  219. mailinglist.Ums-Intl.group = "Fidonet.UMS-INTL"
  220. mailinglist.Ums-Intl.users = "Matthias Scheler,tron@lyssa.owl.de
  221. Karl Skibinski,charly@p42.swb.de
  222. Bill Holder,bill@yarrow.wt.uwa.edu.au
  223. Ian Moran,ianm@icsbelf.co.uk
  224. Dale E. Reed Jr.,daler@crnstn.spk.wa.us
  225. Randy Schnedler,UMS-List@fcircus.sat.tx.us
  226. Bernhard Seefeld,seefeld@amiga.icu.net.ch
  227. Christian Ruetgers,chr@quack.ms.open.de
  228. Christopher Aldi,aldi%phantm@uunet.uu.net
  229. Marc Jackisch,mtj@tron.gun.de
  230. Michael K Greene,mgreene@holonet.net
  231. Mario Kemper,magick@delbox.zer.de
  232. Johan Billing,johan_billing@kcc.ct.se
  233. Andreas Schildbach,p7003df@sun1.lrz-muenchen.de
  234. Stefan Stuntz,stuntz@informatik.tu-muenchen.de
  235. James McOrmond,ab207@freenet.carleton.ca
  236. Stefan Becker,stefanb@yello.ping.de
  237. Bernhard Moellemann,zza@rz.uni-karlsruhe.de
  238. Iain Hibbert,ums-intl@skate.demon.co.uk
  239. hartmut Goebel,hartmut@oberon.nbg.sub.org
  240. Thomas Schwarz,blacky@bmagic.mayn.sub.de
  241. Markus Stipp,corwin@pixar.owl.de
  242. Arthur Choung,achoung@kaiwan.com
  243. sjohnson,sjohnson@godzilla.uucp
  244. Maus-Mailbox Bremen-2,Gruppe_UMS-INT.ML%hb2.maus.de@oytix.hb.north.de
  245. ums-dev-list,ums-dev-list%light.fipnet.fi@zruty.dfv.rwth-aachen.de
  246. Klaus 'kamel' Melchior,kmel@eifel.oche.de
  247. olio,olio@Informatik.Uni-Bremen.DE
  248. Raymond Penners,raymondp@sphinx.stack.urc.tue.nl
  249. Stefan Gybas,cab@studbox.uni-stuttgart.de
  250. kmel,kmel@cwg.fido.de
  251. Tommy V. Hansen,ums_list@fan.ping.dk
  252. Erik Bystrom,erikb@chiba.augs.se"
  253. EndUser
  254.  
  255.  
  256. And this is the same in V11 syntax:
  257.  
  258. ( Exporter
  259.     ( Alias
  260.         list
  261.         Request
  262.         listserv
  263.         testlist
  264.         "Mailinglist 'testlist'"
  265.         "Ums-Intl"
  266.         "Mailinglist 'Ums-Intl'"
  267.     )
  268.     ( Name "UMS Mailinglist Server" )
  269.     ( Password secret )
  270.     ( READACCESS
  271.         "(Fidonet.UMS-INTL|test.test)" )
  272.     ( WRITEACCESS "#?" )
  273.     ( NETACCESS "#?" )
  274.     ( IMPORT "#?" )
  275.     ( EXPORT % )
  276.     ( DISTRIBUTION "(%|#?,)(mailinglist|list|UMS|N|Net|world)(,#?|%)" )
  277.     ( rfc.username list )
  278.     ( mailinglist.helpfile "wb:ums/mlist/helpfile" )
  279.     ( mailinglist.hostname "umshq.dfv.rwth-aachen.de" )
  280.     ( mailinglist.lists "Ums-Intl\ntestlist" )
  281.     ( mailinglist.server Request )
  282.     ( mailinglist.testlist.access
  283.         "(SYSOP|Martin Horneffer)," )
  284.     ( mailinglist.testlist.descfile
  285.         "wb2:ums/mlist/testlist.desc" )
  286.     ( mailinglist.testlist.users
  287.         "Martin Horneffer,umshq\n"
  288.         "umsadm,umsadm@wowbagger.pc-labor.uni-bremen.de\n"
  289.         "Test User,test@test.do.main" )
  290.     ( "mailinglist.Ums-Intl.access" "#?" )
  291.     ( "mailinglist.Ums-Intl.descfile" "wb2:ums/mlist/Ums-Intl.desc" )
  292.     ( "mailinglist.Ums-Intl.group" "Fidonet.UMS-INTL" )
  293.     ( "mailinglist.Ums-Intl.users"
  294.         "Matthias Scheler,tron@lyssa.owl.de\n"
  295.         "Karl Skibinski,charly@p42.swb.de\n"
  296.         "Bill Holder,bill@yarrow.wt.uwa.edu.au\n"
  297.         "Ian Moran,ianm@icsbelf.co.uk\n"
  298.         "Dale E. Reed Jr.,daler@crnstn.spk.wa.us\n"
  299.         "Randy Schnedler,UMS-List@fcircus.sat.tx.us\n"
  300.         "Bernhard Seefeld,seefeld@amiga.icu.net.ch\n"
  301.         "Christian Ruetgers,chr@quack.ms.open.de\n"
  302.         "Christopher Aldi,aldi%phantm@uunet.uu.net\n"
  303.         "Marc Jackisch,mtj@tron.gun.de\n"
  304.         "Michael K Greene,mgreene@holonet.net\n"
  305.         "Mario Kemper,magick@delbox.zer.de\n"
  306.         "Johan Billing,johan_billing@kcc.ct.se\n"
  307.         "Andreas Schildbach,p7003df@sun1.lrz-muenchen.de\n"
  308.         "Stefan Stuntz,stuntz@informatik.tu-muenchen.de\n"
  309.         "James McOrmond,ab207@freenet.carleton.ca\n"
  310.         "Stefan Becker,stefanb@yello.ping.de\n"
  311.         "Bernhard Moellemann,zza@rz.uni-karlsruhe.de\n"
  312.         "Iain Hibbert,ums-intl@skate.demon.co.uk\n"
  313.         "hartmut Goebel,hartmut@oberon.nbg.sub.org\n"
  314.         "Thomas Schwarz,blacky@bmagic.mayn.sub.de\n"
  315.         "Markus Stipp,corwin@pixar.owl.de\n"
  316.         "Arthur Choung,achoung@kaiwan.com\n"
  317.         "sjohnson,sjohnson@godzilla.uucp\n"
  318.         "Maus-Mailbox Bremen-2,Gruppe_UMS-INT.ML%hb2.maus.de@oytix.hb.north.de\n"
  319.         "ums-dev-list,ums-dev-list%light.fipnet.fi@zruty.dfv.rwth-aachen.de\n"
  320.         "Klaus 'kamel' Melchior,kmel@eifel.oche.de\n"
  321.         "olio,olio@Informatik.Uni-Bremen.DE\n"
  322.         "Raymond Penners,raymondp@sphinx.stack.urc.tue.nl\n"
  323.         "Stefan Gybas,cab@studbox.uni-stuttgart.de\n"
  324.         "kmel,kmel@cwg.fido.de\n"
  325.         "Tommy V. Hansen,ums_list@fan.ping.dk\n"
  326.         "Erik Bystrom,erikb@chiba.augs.se" )
  327. )
  328.  
  329.  
  330.  
  331. LOOP-mode:
  332. ~~~~~~~~~~
  333.  
  334.   The  LOOP  parameter  allows  the  ListServer to run continuously in a
  335. loop.  This  can  be  used  to run ListServer parallel to a "uucico" and
  336. allows it to return mailinglist-mails in the same phone-call.
  337.  
  338.   When  using the LOOP-mode, you must specify a "LOOP-command" after the
  339. "LOOP"  keyword  in the command-line. ListServer will run as usual, read
  340. its config and process requests and lists, but instead of terminating it
  341. will start the LOOP-command.
  342.  
  343.   This  command  can be used e.g. to export mails, wait for new incoming
  344. mails   and   import   them.  ListServer  will  look  at  the  command's
  345. return-code.   If   this  is  zero,  i.e.  the  command  was  completely
  346. successful, ListServer will immediately look for new mail again, process
  347. requests and lists and start the LOOP-command again.
  348.  
  349.   When  the  command  returns  any  other  return-code,  ListServer will
  350. terminate.
  351.  
  352.  
  353. Setup LOOP-mode for fast mailinglists:
  354. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  355.  
  356.   In  the  ListServer-archive  you  should find one directory called "s"
  357. with some scripts that show an example of how fast mailinglists could be
  358. setup. To use them, the following steps are required:
  359.  
  360.  - rename the (real) uuxqt-binary to "uuxqt-bin".
  361.  
  362.  - move "s/uuxqt" to some place in your path.
  363.  
  364.   This  replacement  uuxqt  is supposed be started by uucico. instead of
  365. importing  news and mail itself it merely signals the ListServer-process
  366. to look for new files.
  367.  
  368.  - start  the uucp-session with the "s/uupoll" script. You might want to
  369. customize  it  to  suit your needs and setup. E.g. change the ListServer
  370. password, add flags to uucico etc.
  371.  
  372.   With  this  script  a "slave" process is started before uucico. It's a
  373. ListServer  with  a  special  LOOP  command:  the supplied "s/listslave"
  374. script. This script does the exporting, importing, waiting for new files
  375. and detecting when to terminate the ListServer loop.
  376.  
  377.   You'll  also  need a uucico that starts "uuxqt" during the phone-call,
  378. everytime  files  are received. eg with wUUCP, "UuxqtInterval 2" in your
  379. UULIB:Config file will do the job.
  380.  
  381.  
  382. Martin Horneffer, 26.8.1994
  383.